{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "3a715e64",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import math\n",
    "import matplotlib.pyplot as plt\n",
    "from sympy import symbols, cos, sin\n",
    "from sympy.plotting import plot_parametric\n",
    "from math import sin,cos\n",
    "import io\n",
    "import cv2\n",
    "import pykalman\n",
    "from scipy import optimize\n",
    "import matplotlib as mpl\n",
    "from numpy import array, arange, abs as np_abs\n",
    "from numpy.fft import rfft, rfftfreq\n",
    "from math import sin, pi\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib as mpl\n",
    "from scipy.io import wavfile"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b1dc3382",
   "metadata": {},
   "source": [
    "# Лабораторная работа 2.5 \n",
    "В файле ’tune.wav’ записана мелодия, искаженная помехой. Выполнена фильтрация."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "8223d12d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "44100\n",
      "[     0  27652 -29673 ...  23172  14248 -30478]\n"
     ]
    }
   ],
   "source": [
    "Fs, data = wavfile.read('./tune.wav')\n",
    "print(Fs)\n",
    "print(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "7c6013a8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f9221ba6df0>]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ft = np.fft.fft(data)\n",
    "freqs = np.fft.fftfreq(len(ft), d=1/Fs)\n",
    "plt.figure(1)\n",
    "plt.xlim(-2000, 2000)\n",
    "plt.plot(freqs, abs(ft))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "3309f5ab",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f921d63fca0>]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# сцепиально подобранная константа\n",
    "fltr = 1400\n",
    "fltr_ft = []\n",
    "for i in range(len(ft)):\n",
    "    if abs(freqs[i]) > fltr:\n",
    "        fltr_ft.append(0)\n",
    "    else:\n",
    "        fltr_ft.append(ft[i])\n",
    "plt.figure(1)\n",
    "plt.xlim(-1500, 1500)\n",
    "plt.plot(freqs, np.array(np.abs(fltr_ft)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "4ed68f8f",
   "metadata": {},
   "outputs": [],
   "source": [
    "data2 = np.fft.ifft(fltr_ft)\n",
    "data_ans = []\n",
    "for i in data2:\n",
    "    data_ans.append(np.int16(i.real))\n",
    "wavfile.write('./tune_filt.wav', Fs, np.int16(data_ans))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ef932bc8",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "63c392d7",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "988c00da",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "717b4e7a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d2bcec98",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
